package juego.control;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import juego.enemigo.Enemigo;
import juego.powerups.PowerUp;

public class Inmune extends Caracteristica {

	public Inmune(Personaje mario, int x, int y, JLabel nivel, int up){
		
		this.mario=mario;
		this.x=x;
		this.y=y;
		this.nivel=nivel;
		this.up=up;

	}
	
	public void derecha() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_derecha.gif")));
		mario.setLocation(mario.getLocation().x+32 ,mario.getLocation().y);

		if (mario.getLevel().getEntidad(x-1, y+1).tienePremios()){
			PowerUp p= mario.getLevel().getEntidad(x-1, y+1).getPrimerPremio();
			p.colisionarPowerUp(mario, x-1, y+1,nivel);
		}
		y++;
		
		

		nivel.setLocation(nivel.getLocation().x - 32,nivel.getLocation().y);
		
	}

	public void izquierda() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_izquierda.gif")));
		mario.setLocation(mario.getLocation().x-32 ,mario.getLocation().y);
		if (mario.getLevel().getEntidad(x-1, y-1).tienePremios()  && (mario.getLevel().getEntidad(x-1, y+1).nombreEntidad().equals("vacio"))){
			PowerUp p=mario.getLevel().getEntidad(x-1, y-1).getPrimerPremio();
			p.colisionarPowerUp(mario, x-1, y-1,nivel);
			
			
		}
		y --;
		nivel.setLocation(nivel.getLocation().x + 32,nivel.getLocation().y);
		
	}

	
	public void quieto() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_quieto.gif")));
		
	}

	
	public void agachado() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_dead.gif")));
		
	}

	public void saltar() {
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_saltar_der.gif")));
		if(mario.getLevel().getEntidad(x-2,y).esTransitable()){
			
			mario.setLocation(mario.getLocation().x ,mario.getLocation().y-32);
			up+=32;
			x--;
			mario.nada(x, y);
			
		}
		else{
			mario.getLevel().getEntidad(x-2,y).colisionarEntidadDown(mario,nivel,x-2,y);
			}
	}

	

	public void saltarDerecha(){
		int oldy=y;
		mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_saltar_der.gif")));
		if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
			up+=32;
			x-=1;
			mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
			if (mario.getLevel().getEntidad(x,y+1).esTransitable()){
				y+=1;
				mario.setLocation(mario.getLocation().x+32,mario.getLocation().y);
		
				if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
					x-=1;
					up+=32;
					mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
					
					if (mario.getLevel().getEntidad(x,y+1).esTransitable()){
						y+=1;
						
						mario.setLocation(mario.getLocation().x+32,mario.getLocation().y);
						
						if (!mario.getLevel().getEntidad(x+1,y).esTransitable()){  
							  mario.nada(x,y);
							 
						}
						else {
							this.caer();
							mario.nada(x+1, y);
					  }
				  
						
				 
				  }
			  
					this.caer(); 
					mario.nada(x, y+1);
			  }
				this.caer(); 
				this.nada(x-1, y);
			
				}
			this.caer(); 
			mario.nada(x, y+1);
							
		}
		
	
		nivel.setLocation(nivel.getLocation().x - ((y - oldy)*32),nivel.getLocation().y);
		
	
	
		}
	
	public void saltarIzquierda(){
		
		int oldy=y;
		 if (y>18 ){
			 mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_saltar_izq.gif")));
				if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
					up+=32;
					x-=1;
					mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
					if (mario.getLevel().getEntidad(x,y-1).esTransitable()){
						y-=1;
						
						mario.setLocation(mario.getLocation().x-32,mario.getLocation().y);
						
						if (mario.getLevel().getEntidad(x-1,y).esTransitable()){
							x-=1;
							up+=32;
							mario.setLocation(mario.getLocation().x,mario.getLocation().y-32);
							if (mario.getLevel().getEntidad(x,y-1).esTransitable()){
								y-=1;
								
								mario.setLocation(mario.getLocation().x-32,mario.getLocation().y);
								
								if (!mario.getLevel().getEntidad(x+1,y).esTransitable()){  
										mario.nada(x,y);
										
									}
									else {
										
											mario.caer();
											mario.nada(x+1,y);
								
											}
							
								
								}
								mario.caer();
								mario.nada(x,y-1);
			
		  				
							}
							mario.caer();
							//this.nada(x-1, y);

					}
						mario.caer();
						mario.nada(x,y-1);
		 	
			}
			
		
		 }
		nivel.setLocation(nivel.getLocation().x + (oldy - y)*32,nivel.getLocation().y);
		
	}




	public boolean puedoIrDerecha(){
	
	
		if (mario.getLevel().getEntidad(x-1, y+1)!=null){
		
		if (mario.getLevel().getEntidad(x-1, y+1).esTransitable()){
		
			return true;
		}
			
		}
		return false;
	}

	public void caer()
	{
		if(mario.getLevel().getEntidad(x,y)!=null){
			while (up>=0 && mario.getLevel().getEntidad(x,y).esTransitable()){
				mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
				up-=32;
				if (mario.getLevel().getEntidad(x,y).esTransitable()) {
					x++;
					}
				}
			
				if (x>=14) { 
					mario.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_dead.gif")));
				    mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
					mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
					mario.setLocation(mario.getLocation().x ,mario.getLocation().y+32);
				
					mario.setVidas(0);
					mario.getVentanaPrincipal().actualizarVidas();
					mario.dibujarVidas();	
											 
				}
			}
		}



public boolean soy(){return true;}
	
	public boolean puedoIrIzquierda(){

		if (y<=17) {return false;}
		if (mario.getLevel().getEntidad(x-1, y-1)!=null){
			
		return mario.getLevel().getEntidad(x-1, y-1).esTransitable();
		}
		return false;
	}
	

	public int dameXtuya(){return x;}
	public int dameYtuya(){return y;}
	public int dameUptuyo(){return up;}
	
	public void nada(int x, int y)
	{
		if (mario.getLevel().getEntidad(x, y)!=null){
		if (mario.getLevel().getEntidad(x, y).tienePremios() ){
			PowerUp p=mario.getLevel().getEntidad(x, y).getPrimerPremio();
			p.colisionarPowerUp(mario, x, y,nivel);
		}
		
	}}

	
	public void dispara() {
		// al ser inmune no puede disparar
		
	}

	
	public boolean tengoFlor() {
		// al ser inmune no puede disparar
		return false;
	}

	
	public void activarFlor() {
		// al ser inmune no puede disparar
		
	}
}
